package com.mlh.doublepointer;

//给定一个含有 n 个正整数的数组和一个正整数 target 。
//找出该数组中满足其总和大于等于 target 的长度最小的连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ，
//并返回其长度。如果不存在符合条件的子数组，返回 0 。
//输入：target = 7, nums = [2,3,1,2,4,3]
//输出：2
//解释：子数组 [4,3] 是该条件下的长度最小的子数组。
public class MinSubArrayLen {
	public static void main(String[] args) {
		int[]nums={2,3,1,2,4,3};
		method1(7,nums);
	}
	//独立完成通过
	//利用双指针法之快慢指针来完成的
	public static int method1(int target, int[] nums) {
		int n=nums.length;
		int quick=0;
		int slow=0;
		int sum=0;
		int minLen=n;

		for(;quick<n;quick++){
			sum+=nums[quick];
			while (sum>=target){
				minLen=quick-slow+1<minLen?quick-slow+1:minLen;
				System.out.println(slow+" "+quick);
				sum-=nums[slow];
				slow++;
			}
		}
		if(slow==0){
			return 0;
		}
		return minLen;
	}
}
